-- 创建安全的系统命令执行函数
local function safe_system(cmd)
    -- 检查命令是否存在
    if vim.fn.executable(cmd:match "^[^%s]+") ~= 1 then
        return false
    end

    -- 使用 pcall 捕获可能的错误
    local ok, result = pcall(vim.fn.system, cmd)
    if not ok then
        vim.notify("执行命令失败: " .. cmd .. "\n错误: " .. result, vim.log.levels.WARN)
        return false
    end

    -- 检查命令返回值
    return vim.v.shell_error == 0
end

-- 记录是否在注释中
vim.g.in_comment = false

vim.api.nvim_create_autocmd("InsertCharPre", {
    pattern = "*",
    callback = function()
        local line = vim.api.nvim_get_current_line()
        local col = vim.api.nvim_win_get_cursor(0)[2]

        -- 检测 // 输入
        if col >= 1 and line:sub(col - 1, col + 1) ~= nil and line:sub(col - 1, col + 1):match "//" then
            if safe_system "fcitx5-remote -o" then
                vim.g.in_comment = true
            end
        end
    end,
})

vim.api.nvim_create_autocmd("TextChangedI", {
    pattern = "*",
    callback = function()
        if vim.g.in_comment then
            local line = vim.api.nvim_get_current_line()
            -- 如果当前行不再以 // 开头
            if not line:match "//" then
                if safe_system "fcitx5-remote -c" then
                    vim.g.in_comment = false
                end
            end
        end
    end,
})

vim.api.nvim_create_autocmd("InsertLeave", {
    pattern = "*",
    callback = function()
        if safe_system "fcitx5-remote -c" then
            vim.g.in_comment = false
        end
    end,
})
